package com.skytech.tax.customsdatawarehouse.singlewindow.revokelist.resource;

import com.skytech.tax.customsdatawarehouse.singlewindow.revokelist.domain.service.CusAutoRevokeListService;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;

/**
 * @author Lianhong
 * @since 2021/11/9
 */
@RestController
@RequestMapping("/single-window/cus-auto-revoke-list")
public class CusAutoRevokeListResource {

    @Resource
    private CusAutoRevokeListService cusAutoRevokeListService;


    /**
     * 保存修撤单
     *
     * @param revokeList 修撤单
     */
    @PostMapping
    public String saveRevokeList(@RequestBody String revokeList) {
        return cusAutoRevokeListService.save(revokeList);
    }

    /**
     * 查询修撤单
     *
     * @param decModSeqNo 修撤单编号
     */
    @GetMapping("{decModSeqNo}")
    public String details(@PathVariable String decModSeqNo) {
        return cusAutoRevokeListService.details(decModSeqNo);
    }

    /**
     * 删除修撤单
     *
     * @param decModSeqNo 修撤单编号
     */
    @DeleteMapping("{decModSeqNo}")
    public void remove(@PathVariable String decModSeqNo) {
        cusAutoRevokeListService.remove(decModSeqNo);
    }

    /**
     * 判断是否存在修撤单
     *
     * @param decModSeqNo 修撤单编号
     * @return 是否存在
     */
    @GetMapping("{decModSeqNo}/exists")
    public boolean existsRevokeList(@PathVariable String decModSeqNo) {
        return cusAutoRevokeListService.exists(decModSeqNo);
    }

    /**
     * 判断是否存在修撤单
     *
     * @return decModSeqNo-01,decModSeqNo-02,...
     */
    @PostMapping("exists")
    public String existsRevokeList(@RequestBody List<String> decModSeqNos) {
        return cusAutoRevokeListService.existsRevokeList(decModSeqNos);
    }


    /**
     * 查询修撤单-文件名
     *
     * @param decModSeqNo 修撤单编号
     * @return 阿里云存储文件名
     */
    @GetMapping("{decModSeqNo}/file")
    public String file(@PathVariable String decModSeqNo) {
        return cusAutoRevokeListService.file(decModSeqNo);
    }


    /**
     * 保存修撤单-申请表文件名
     *
     * @param decModSeqNo 修撤单编号
     * @param storedFile  存储文件名称
     */
    @PostMapping("{decModSeqNo}/file")
    public void saveFile(@PathVariable String decModSeqNo, @RequestBody String storedFile) {
        cusAutoRevokeListService.saveFile(decModSeqNo, storedFile);
    }

    /**
     * 修撤单-申请表文件是否已存储
     *
     * @param decModSeqNo 修撤单编号
     */
    @GetMapping("{decModSeqNo}/file/stored")
    public boolean fileStored(@PathVariable String decModSeqNo) {
        return cusAutoRevokeListService.fileStored(decModSeqNo);
    }

}
